#ifndef ENCODE_HPP
#define ENCODE_HPP

#include <algorithm>
#include <iomanip>
#include <sstream>
#include <fstream>
#include <vector>
#include <NTL/GF2.h>
#include <NTL/mat_GF2.h>
#include <NTL/vec_GF2.h>
#include "configs.hpp"
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>

NTL_CLIENT

// generate a random codeword
void generate_random_codeword(vec_GF2&, const mat_GF2&);
// verifying the correctness of the generator function
void verify_G(const mat_GF2&, const mat_GF2&);
void generate_random_noisy_codeword(vec_GF2&, vec_GF2&, const mat_GF2&);

#endif// ENCODE_HPP
